| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { NextResponse } from "next/server";
- import { verifyToken } from "@/lib/auth";
- import smbClient from "@/lib/smbClient";
- export async function GET(request, { params }) {
- const headers = new Headers();
- headers.set("Cache-Control", "no-store");
- const decoded = verifyToken(request);
- if (decoded.error) {
- return NextResponse.json(
- { error: decoded.error },
- { status: 401, headers }
- );
- }
- const { path: pathArray = [] } = params;
- const niederlassungId = pathArray.shift();
- if (decoded.role !== "admin" && decoded.niederlassungId !== niederlassungId) {
- console.log(`Keine Berechtigung für diese Niederlassung ${niederlassungId}`);
- return NextResponse.json(
- { error: "Keine Berechtigung" },
- { status: 403, headers }
- );
- }
- const smbPath =
- pathArray.length > 0
- ? [niederlassungId, ...pathArray].join("\\")
- : [niederlassungId].join("\\");
- console.log("Versuche, auf folgenden Pfad zuzugreifen:", smbPath);
- return new Promise((resolve) => {
- smbClient.readdir(smbPath, (err, files) => {
- if (err) {
- console.error("Fehler beim Zugriff auf den Ordner:", err);
- resolve(
- NextResponse.json(
- {
- error: "Fehler beim Zugriff auf den Ordner",
- details: err.message,
- },
- { status: 500, headers }
- )
- );
- } else if (!files || files.length === 0) {
- console.log(`Keine Dateien im Pfad ${smbPath} gefunden.`);
- resolve(
- NextResponse.json(
- { message: `Keine Dateien im angegebenen Ordner ${smbPath} gefunden.` },
- { status: 200, headers }
- )
- );
- } else {
- const sortedFiles = [...files].sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
- resolve(NextResponse.json({ files: sortedFiles }, { status: 200, headers }));
- }
- });
- });
- }
|